[INFO] fetching crate robot-description-builder 0.0.3...
[INFO] fixing robot-description-builder-0.0.3 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate robot-description-builder 0.0.3 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate robot-description-builder 0.0.3
[INFO] finished tweaking crates.io crate robot-description-builder 0.0.3
[INFO] tweaked toml for crates.io crate robot-description-builder 0.0.3 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate robot-description-builder 0.0.3 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate robot-description-builder 0.0.3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660
[INFO] running `Command { std: "docker" "start" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling rustix v0.38.28
[INFO] [stderr]     Checking bytemuck v1.14.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.8
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]     Checking regex-syntax v0.8.2
[INFO] [stderr]     Checking linux-raw-sys v0.4.12
[INFO] [stderr]    Compiling typenum v1.17.0
[INFO] [stderr]     Checking termcolor v1.4.0
[INFO] [stderr]     Checking itertools v0.12.0
[INFO] [stderr]     Checking quick-xml v0.31.0
[INFO] [stderr]    Compiling syn v2.0.41
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking safe_arch v0.7.1
[INFO] [stderr]     Checking wide v0.7.13
[INFO] [stderr]     Checking is-terminal v0.4.9
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-complex v0.4.4
[INFO] [stderr]     Checking num-integer v0.1.45
[INFO] [stderr]     Checking regex-automata v0.4.3
[INFO] [stderr]     Checking simba v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.50
[INFO] [stderr]    Compiling test-log-macros v0.2.14
[INFO] [stderr]     Checking thiserror v1.0.50
[INFO] [stderr]     Checking regex v1.10.2
[INFO] [stderr]     Checking env_logger v0.10.1
[INFO] [stderr]     Checking test-log v0.2.14
[INFO] [stderr]    Compiling nalgebra-macros v0.2.1
[INFO] [stderr]     Checking nalgebra v0.32.3
[INFO] [stderr]     Checking robot-description-builder v0.0.3 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/link/builder/collision_builder.rs (1 fix)
[INFO] [stderr]        Fixed src/joint/jointbuilder.rs (1 fix)
[INFO] [stderr]        Fixed src/link/builder/visual_builder.rs (1 fix)
[INFO] [stderr]        Fixed src/link.rs (1 fix)
[INFO] [stderr]        Fixed src/cluster_objects/kinematic_data_tree.rs (3 fixes)
[INFO] [stderr]        Fixed src/link/builder/linkbuilder.rs (1 fix)
[INFO] [stderr]        Fixed src/material/descriptor.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/chained/mod.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout]  76 |       #[test]
[INFO] [stdout]     |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  89 |           let tree = Link::builder("root").build_tree();
[INFO] [stdout]     |               ----
[INFO] [stdout]     |               |
[INFO] [stdout]     |               `tree` calls a custom destructor
[INFO] [stdout]     |               `tree` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 124 |           let tree = Link::builder("root").build_tree();
[INFO] [stdout]     |               ----
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |               `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 137 |               tree.yank_link("root").unwrap(),
[INFO] [stdout]     |               -------------------------------
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this value will be stored in a temporary; let us call it `#12`
[INFO] [stdout]     |               up until Edition 2021 `#12` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 138 | /             Chained(LinkBuilder {
[INFO] [stdout] 139 | |                 name: "root".into(),
[INFO] [stdout] 140 | |                 joints: vec![
[INFO] [stdout] 141 | |                     JointBuilder {
[INFO] [stdout] ...   |
[INFO] [stdout] 149 | |                                     ..Default::default()
[INFO] [stdout]     | |                                       ------------------
[INFO] [stdout]     | |                                       |
[INFO] [stdout]     | |                                       this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]     | |                                       up until Edition 2021 `#11` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 150 | |                                 }),
[INFO] [stdout] 151 | |                                 ..Default::default()
[INFO] [stdout]     | |                                   ------------------
[INFO] [stdout]     | |                                   |
[INFO] [stdout]     | |                                   this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]     | |                                   up until Edition 2021 `#10` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 152 | |                             }],
[INFO] [stdout] 153 | |                             ..Default::default()
[INFO] [stdout]     | |                               ------------------
[INFO] [stdout]     | |                               |
[INFO] [stdout]     | |                               this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]     | |                               up until Edition 2021 `#9` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 154 | |                         }),
[INFO] [stdout] 155 | |                         ..Default::default()
[INFO] [stdout]     | |                           ------------------
[INFO] [stdout]     | |                           |
[INFO] [stdout]     | |                           this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]     | |                           up until Edition 2021 `#8` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...   |
[INFO] [stdout] 165 | |                                     ..Default::default()
[INFO] [stdout]     | |                                       ------------------
[INFO] [stdout]     | |                                       |
[INFO] [stdout]     | |                                       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     | |                                       up until Edition 2021 `#7` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 166 | |                                 }),
[INFO] [stdout] 167 | |                                 ..Default::default()
[INFO] [stdout]     | |                                   ------------------
[INFO] [stdout]     | |                                   |
[INFO] [stdout]     | |                                   this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     | |                                   up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 168 | |                             }],
[INFO] [stdout] 169 | |                             ..Default::default()
[INFO] [stdout]     | |                               ------------------
[INFO] [stdout]     | |                               |
[INFO] [stdout]     | |                               this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     | |                               up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 170 | |                         }),
[INFO] [stdout] 171 | |                         ..Default::default()
[INFO] [stdout]     | |                           ------------------
[INFO] [stdout]     | |                           |
[INFO] [stdout]     | |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     | |                           up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...   |
[INFO] [stdout] 174 | |                 ..Default::default()
[INFO] [stdout]     | |                   ------------------
[INFO] [stdout]     | |                   |
[INFO] [stdout]     | |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     | |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 175 | |             })
[INFO] [stdout]     | |              ^
[INFO] [stdout]     | |              |
[INFO] [stdout]     | |______________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#7` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#8` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#9` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#10` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#12` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `tree` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/joint/joint_data/mimic_data.rs:69:16
[INFO] [stdout]    |
[INFO] [stdout] 69 |                joint_name: value
[INFO] [stdout]    |   _________________________^
[INFO] [stdout]    |  |_________________________|
[INFO] [stdout] 70 | ||                 .joint
[INFO] [stdout] 71 | ||                 .upgrade()
[INFO] [stdout] 72 | ||                 .unwrap() // FIXME: Is unwrap Ok?
[INFO] [stdout]    | ||_________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 73 | |                  .try_read()
[INFO] [stdout] 74 | |                  .unwrap() // FIXME: Is unwrap Ok?
[INFO] [stdout]    | |__________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 80 |        }
[INFO] [stdout]    |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]            consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]    |
[INFO] [stdout] 68 ~         let x = Self {
[INFO] [stdout] 69 |             joint_name: value
[INFO] [stdout] ...
[INFO] [stdout] 78 |             offset: value.offset,
[INFO] [stdout] 79 ~         }; x
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint/joint_data/mimic_data.rs:94:5
[INFO] [stdout]     |
[INFO] [stdout]  94 | //                 tree.upgrade()
[INFO] [stdout]  95 | ||                     .unwrap() // This unwrap is Ok
[INFO] [stdout]     | ||_____________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout]  96 | |                      .joints
[INFO] [stdout]  97 | |                      .try_read()
[INFO] [stdout]  98 | |                      .unwrap() // FIXME: Is this unwrap OK?
[INFO] [stdout]     | |______________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 105 |        }
[INFO] [stdout]     |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]             consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]     |
[INFO] [stdout]  92 ~         let x = MimicData {
[INFO] [stdout]  93 |             joint: Weak::clone(
[INFO] [stdout] ...
[INFO] [stdout] 103 |             offset: self.offset,
[INFO] [stdout] 104 ~         }; x
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint.rs:414:4
[INFO] [stdout]     |
[INFO] [stdout] 392 |     #[test]
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] 393 |     fn rebuild() {
[INFO] [stdout] 394 |         let tree = LinkBuilder::new("root").build_tree();
[INFO] [stdout]     |             ----
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `tree` calls a custom destructor
[INFO] [stdout]     |             `tree` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 406 |         let rebuilder = tree
[INFO] [stdout]     |             ---------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `rebuilder` calls a custom destructor
[INFO] [stdout]     |             `rebuilder` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 414 |             JointBuilder::new("Joint1", crate::JointType::Fixed).add_origin_offset((2.0, 3.0, 5.0))
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |             up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `tree` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `rebuilder` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint.rs:637:5
[INFO] [stdout]     |
[INFO] [stdout] 586 |               let tree = tree.clone();
[INFO] [stdout]     |                   ----
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   `tree` calls a custom destructor
[INFO] [stdout]     |                   `tree` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 636 |                   yanked_branch.unwrap().0,
[INFO] [stdout]     |                   ----------------------
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 637 | /                 JointBuilder {
[INFO] [stdout] 638 | |                     name: "joint-2".into(),
[INFO] [stdout] 639 | |                     joint_type: JointType::Fixed,
[INFO] [stdout] 640 | |                     transform: Transform {
[INFO] [stdout] ...   |
[INFO] [stdout] 646 | |                     ..Default::default()
[INFO] [stdout]     | |                       ------------------
[INFO] [stdout]     | |                       |
[INFO] [stdout]     | |                       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     | |                       up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 647 | |                 }
[INFO] [stdout]     | |                 ^
[INFO] [stdout]     | |                 |
[INFO] [stdout]     | |_________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 648 |               )
[INFO] [stdout] 649 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `tree` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint.rs:703:5
[INFO] [stdout]     |
[INFO] [stdout] 652 |               let tree = tree.clone();
[INFO] [stdout]     |                   ----
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   `tree` calls a custom destructor
[INFO] [stdout]     |                   `tree` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 702 |                   yanked_branch.unwrap().0,
[INFO] [stdout]     |                   ----------------------
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                   up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 703 | /                 JointBuilder {
[INFO] [stdout] 704 | |                     name: "joint-1-1".into(),
[INFO] [stdout] 705 | |                     joint_type: JointType::Revolute,
[INFO] [stdout] 706 | |                     transform: Transform {
[INFO] [stdout] ...   |
[INFO] [stdout] 722 | |                         ..Default::default()
[INFO] [stdout]     | |                           ------------------
[INFO] [stdout]     | |                           |
[INFO] [stdout]     | |                           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     | |                           up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...   |
[INFO] [stdout] 731 | |                     ..Default::default()
[INFO] [stdout]     | |                       ------------------
[INFO] [stdout]     | |                       |
[INFO] [stdout]     | |                       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     | |                       up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 732 | |                 }
[INFO] [stdout]     | |                 ^
[INFO] [stdout]     | |                 |
[INFO] [stdout]     | |_________________this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 733 |               )
[INFO] [stdout] 734 |           }
[INFO] [stdout]     |           - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `tree` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint.rs:788:5
[INFO] [stdout]     |
[INFO] [stdout] 505 |       #[test]
[INFO] [stdout]     |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] 506 |       fn yank_less_simple() {
[INFO] [stdout] 507 |           let tree = {
[INFO] [stdout]     |               ----
[INFO] [stdout]     |               |
[INFO] [stdout]     |               `tree` calls a custom destructor
[INFO] [stdout]     |               `tree` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 737 |               let tree = tree.clone();
[INFO] [stdout]     |                   ----
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 787 |                   yanked_branch.unwrap().0,
[INFO] [stdout]     |                   ----------------------
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]     |                   up until Edition 2021 `#7` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 788 | /                 JointBuilder {
[INFO] [stdout] 789 | |                     name: "joint-0".into(),
[INFO] [stdout] 790 | |                     transform: Transform {
[INFO] [stdout] 791 | |                         translation: Some((1., 0., 0.)),
[INFO] [stdout] ...   |
[INFO] [stdout] 827 | |                                 ..Default::default()
[INFO] [stdout]     | |                                   ------------------
[INFO] [stdout]     | |                                   |
[INFO] [stdout]     | |                                   this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     | |                                   up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...   |
[INFO] [stdout] 836 | |                             ..Default::default()
[INFO] [stdout]     | |                               ------------------
[INFO] [stdout]     | |                               |
[INFO] [stdout]     | |                               this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     | |                               up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 837 | |                         }],
[INFO] [stdout] 838 | |                         ..Default::default()
[INFO] [stdout]     | |                           ------------------
[INFO] [stdout]     | |                           |
[INFO] [stdout]     | |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     | |                           up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 839 | |                     }),
[INFO] [stdout] 840 | |                     ..Default::default()
[INFO] [stdout]     | |                       ------------------
[INFO] [stdout]     | |                       |
[INFO] [stdout]     | |                       this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     | |                       up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 841 | |                 }
[INFO] [stdout]     | |                 ^
[INFO] [stdout]     | |                 |
[INFO] [stdout]     | |_________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                   up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `#7` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `tree` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `tree` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/sync.rs:3472:0
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/link.rs:475:18
[INFO] [stdout]     |
[INFO] [stdout] 475 |             { Weak::clone(tree.get_joints().try_read().unwrap().get("steve").unwrap()) };
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^--------------------                         - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this temporary value will be dropped at the end of the block
[INFO] [stdout]     |                           a temporary with access to the borrow is created here ...
[INFO] [stdout]     |
[INFO] [stdout]     = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]             consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]     |
[INFO] [stdout] 475 |             { let x = Weak::clone(tree.get_joints().try_read().unwrap().get("steve").unwrap()); x };
[INFO] [stdout]     |               +++++++                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/transmission/transmission_joint.rs:122:16
[INFO] [stdout]     |
[INFO] [stdout] 122 |                joint_name: self
[INFO] [stdout]     |   _________________________^
[INFO] [stdout]     |  |_________________________|
[INFO] [stdout] 123 | ||                 .joint
[INFO] [stdout] 124 | ||                 .upgrade()
[INFO] [stdout] 125 | ||                 .unwrap() // This unwrap is Ok
[INFO] [stdout]     | ||_________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 126 | |                  .read()
[INFO] [stdout] 127 | |                  .unwrap() // FIXME: This unwrap is not Ok
[INFO] [stdout]     | |__________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 132 |        }
[INFO] [stdout]     |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]             consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]     |
[INFO] [stdout] 121 ~         let x = TransmissionJointBuilder {
[INFO] [stdout] 122 |             joint_name: self
[INFO] [stdout] ...
[INFO] [stdout] 130 |             hardware_interfaces: self.hardware_interfaces.clone(),
[INFO] [stdout] 131 ~         }; x
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/joint/joint_data/mimic_data.rs:69:16
[INFO] [stdout]    |
[INFO] [stdout] 69 |                joint_name: value
[INFO] [stdout]    |   _________________________^
[INFO] [stdout]    |  |_________________________|
[INFO] [stdout] 70 | ||                 .joint
[INFO] [stdout] 71 | ||                 .upgrade()
[INFO] [stdout] 72 | ||                 .unwrap() // FIXME: Is unwrap Ok?
[INFO] [stdout]    | ||_________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 73 | |                  .try_read()
[INFO] [stdout] 74 | |                  .unwrap() // FIXME: Is unwrap Ok?
[INFO] [stdout]    | |__________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 80 |        }
[INFO] [stdout]    |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]            consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]    = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]    |
[INFO] [stdout] 68 ~         let x = Self {
[INFO] [stdout] 69 |             joint_name: value
[INFO] [stdout] ...
[INFO] [stdout] 78 |             offset: value.offset,
[INFO] [stdout] 79 ~         }; x
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/joint/joint_data/mimic_data.rs:94:5
[INFO] [stdout]     |
[INFO] [stdout]  94 | //                 tree.upgrade()
[INFO] [stdout]  95 | ||                     .unwrap() // This unwrap is Ok
[INFO] [stdout]     | ||_____________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout]  96 | |                      .joints
[INFO] [stdout]  97 | |                      .try_read()
[INFO] [stdout]  98 | |                      .unwrap() // FIXME: Is this unwrap OK?
[INFO] [stdout]     | |______________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 105 |        }
[INFO] [stdout]     |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]             consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]     |
[INFO] [stdout]  92 ~         let x = MimicData {
[INFO] [stdout]  93 |             joint: Weak::clone(
[INFO] [stdout] ...
[INFO] [stdout] 103 |             offset: self.offset,
[INFO] [stdout] 104 ~         }; x
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/transmission/transmission_joint.rs:122:16
[INFO] [stdout]     |
[INFO] [stdout] 122 |                joint_name: self
[INFO] [stdout]     |   _________________________^
[INFO] [stdout]     |  |_________________________|
[INFO] [stdout] 123 | ||                 .joint
[INFO] [stdout] 124 | ||                 .upgrade()
[INFO] [stdout] 125 | ||                 .unwrap() // This unwrap is Ok
[INFO] [stdout]     | ||_________________________^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 126 | |                  .read()
[INFO] [stdout] 127 | |                  .unwrap() // FIXME: This unwrap is not Ok
[INFO] [stdout]     | |__________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 132 |        }
[INFO] [stdout]     |        - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `std::sync::RwLockReadGuard`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the temporary is part of an expression at the end of a block;
[INFO] [stdout]             consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
[INFO] [stdout]     |
[INFO] [stdout] 121 ~         let x = TransmissionJointBuilder {
[INFO] [stdout] 122 |             joint_name: self
[INFO] [stdout] ...
[INFO] [stdout] 130 |             hardware_interfaces: self.hardware_interfaces.clone(),
[INFO] [stdout] 131 ~         }; x
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating examples/urdf-tutorial-05-visual.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/urdf-tutorial-07-physics.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/example-1.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/transmission-example.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/urdf-tutorial-08-macroed.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/urdf-tutorial-02.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/smart_builder_example.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating examples/urdf-tutorial-06-flexible.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.23s
[INFO] [stderr] crater-edition-check: robot-description-builder v0.0.3 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking robot-description-builder v0.0.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `WithAxis`
[INFO] [stdout]  --> src/joint/smartjointbuilder/smartparams.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use axis::{NoAxis, WithAxis};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithCalibration`
[INFO] [stdout]  --> src/joint/smartjointbuilder/smartparams.rs:9:38
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use calibration::{NoCalibration, WithCalibration};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithDynamics`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:10:32
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use dynamics::{NoDynamics, WithDynamics};
[INFO] [stdout]    |                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithMimic`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use mimic::{NoMimic, WithMimic};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithSafetyController`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:13:49
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use safety_controller::{NoSafetyController, WithSafetyController};
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `JointTypeTrait` and `SmartJointTypeTrait`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:22:42
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub use super::super::smartjointtypes::{JointTypeTrait, SmartJointTypeTrait};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/link/geometry.rs:70:20
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl PartialEq for (dyn GeometryInterface + Sync + Send) {
[INFO] [stdout]    |                    ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 70 - impl PartialEq for (dyn GeometryInterface + Sync + Send) {
[INFO] [stdout] 70 + impl PartialEq for dyn GeometryInterface + Sync + Send  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithAxis`
[INFO] [stdout]  --> src/joint/smartjointbuilder/smartparams.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use axis::{NoAxis, WithAxis};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithCalibration`
[INFO] [stdout]  --> src/joint/smartjointbuilder/smartparams.rs:9:38
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use calibration::{NoCalibration, WithCalibration};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithDynamics`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:10:32
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use dynamics::{NoDynamics, WithDynamics};
[INFO] [stdout]    |                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithMimic`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use mimic::{NoMimic, WithMimic};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WithSafetyController`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:13:49
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use safety_controller::{NoSafetyController, WithSafetyController};
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `JointTypeTrait` and `SmartJointTypeTrait`
[INFO] [stdout]   --> src/joint/smartjointbuilder/smartparams.rs:22:42
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub use super::super::smartjointtypes::{JointTypeTrait, SmartJointTypeTrait};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/link/geometry.rs:70:20
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl PartialEq for (dyn GeometryInterface + Sync + Send) {
[INFO] [stdout]    |                    ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 70 - impl PartialEq for (dyn GeometryInterface + Sync + Send) {
[INFO] [stdout] 70 + impl PartialEq for dyn GeometryInterface + Sync + Send  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_geometry_data` is never used
[INFO] [stdout]    --> src/link/builder/collision_builder.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl CollisionBuilder {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub(crate) fn get_geometry_data(&self) -> GeometryShapeData {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects.rs:137:21
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn purge_materials(&self) -> Result<(), PoisonWriteIndexError<String, ArcLock<MaterialData>>>;
[INFO] [stdout]     |                        ^^^^^                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn purge_materials(&self) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<MaterialData>>>;
[INFO] [stdout]     |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects.rs:143:3
[INFO] [stdout]     |
[INFO] [stdout] 143 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 144 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<Transmission>>>;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 144 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<Transmission>>>;
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_data_tree.rs:220:3
[INFO] [stdout]     |
[INFO] [stdout] 220 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 221 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<MaterialData>>> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 221 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<MaterialData>>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_data_tree.rs:232:3
[INFO] [stdout]     |
[INFO] [stdout] 232 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 233 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<Transmission>>> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 233 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<Transmission>>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_tree.rs:123:3
[INFO] [stdout]     |
[INFO] [stdout] 123 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 124 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 124 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_tree.rs:129:3
[INFO] [stdout]     |
[INFO] [stdout] 129 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 130 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/robot.rs:140:3
[INFO] [stdout]     |
[INFO] [stdout] 140 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 141 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 141 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/robot.rs:146:3
[INFO] [stdout]     |
[INFO] [stdout] 146 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 147 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 147 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/joint/joint_tranform_mode.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | #[derive(Debug, PartialEq, Clone)]
[INFO] [stdout]    |                 --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 11 |     FigureItOut(fn(LinkShapeData) -> Transform),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/material.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn material_data(&self) -> MaterialDataReference {
[INFO] [stdout]     |                          ^^^^^     ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn material_data(&self) -> MaterialDataReference<'_> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/material/stage.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub(crate) fn data(&self) -> MaterialDataReference {
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub(crate) fn data(&self) -> MaterialDataReference<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_geometry_data` is never used
[INFO] [stdout]    --> src/link/builder/collision_builder.rs:110:16
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl CollisionBuilder {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub(crate) fn get_geometry_data(&self) -> GeometryShapeData {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects.rs:137:21
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn purge_materials(&self) -> Result<(), PoisonWriteIndexError<String, ArcLock<MaterialData>>>;
[INFO] [stdout]     |                        ^^^^^                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn purge_materials(&self) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<MaterialData>>>;
[INFO] [stdout]     |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects.rs:143:3
[INFO] [stdout]     |
[INFO] [stdout] 143 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 144 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<Transmission>>>;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 144 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<Transmission>>>;
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_data_tree.rs:220:3
[INFO] [stdout]     |
[INFO] [stdout] 220 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 221 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<MaterialData>>> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 221 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<MaterialData>>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_data_tree.rs:232:3
[INFO] [stdout]     |
[INFO] [stdout] 232 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 233 |     ) -> Result<(), PoisonWriteIndexError<String, ArcLock<Transmission>>> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 233 |     ) -> Result<(), PoisonWriteIndexError<'_, String, ArcLock<Transmission>>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_tree.rs:123:3
[INFO] [stdout]     |
[INFO] [stdout] 123 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 124 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 124 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/kinematic_tree.rs:129:3
[INFO] [stdout]     |
[INFO] [stdout] 129 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 130 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/robot.rs:140:3
[INFO] [stdout]     |
[INFO] [stdout] 140 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 141 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 141 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<MaterialData>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/cluster_objects/robot.rs:146:3
[INFO] [stdout]     |
[INFO] [stdout] 146 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] 147 |     ) -> Result<(), PoisonError<RwLockWriteGuard<HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 147 |     ) -> Result<(), PoisonError<RwLockWriteGuard<'_, HashMap<String, ArcLock<Transmission>>>>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/joint/joint_tranform_mode.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | #[derive(Debug, PartialEq, Clone)]
[INFO] [stdout]    |                 --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 11 |     FigureItOut(fn(LinkShapeData) -> Transform),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/material.rs:130:23
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn material_data(&self) -> MaterialDataReference {
[INFO] [stdout]     |                          ^^^^^     ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn material_data(&self) -> MaterialDataReference<'_> {
[INFO] [stdout]     |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/material/stage.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub(crate) fn data(&self) -> MaterialDataReference {
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub(crate) fn data(&self) -> MaterialDataReference<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 31.78s
[INFO] [stderr] crater-edition-check all packages now at latest edition
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660", kill_on_drop: false }`
[INFO] [stdout] 5d09804424a52bb8c18ff6220eaec8adc572b3324201cbd50da8dd5f734a0660
